<?php
/**
 * Placeholder kelas untuk membuat report dari satu atau lebih tabel pada database.
 *
 * @category   Controllers
 * @package    Generic
 * @author     Lie Roberto Eliantono <roberto.ea@gmail.com>
 * @version    0.2.2
 */
class Gnc_rep extends MX_Controller
{
	protected $model_path	= 'gnc_db_mysql';
	
	/**
	 * Menginisialisasi atribut kelas dengan default values
	 *
	 * @return void
	 * @access public
	 */
	public function __construct() {
		parent::__construct();
		
		if (!is_null($this->model_path)) {
			$this->load->model($this->model_path, 'model');
		}
	}
	
	/**
	 * Mengeset variabel $this->$name dengan $value
	 *
	 * @return void
	 * @access public
	 */
	public function __set($name, $value) {
		$this->$name = $value;
	}
	
	/**
	 * Mengambil isi dari variabel $this->$name
	 *
	 * @return mixed nilai dari $this->$name
	 * @access public
	 */
	public function __get($name) {
		$result = parent::__get($name);
		if (is_null($result)) {
			$result = $this->$name;
		}
		return $result;
	}
	
	/**
	 * Menentukan method yang dipanggil ketika controller diakses
	 *
	 * Secara default, method ini akan memanggil method report
	 *
	 * @return void
	 * @access public
	 * @see report()
	 */
	public function index() {
		$this->report();
	}
	
	/**
	 * Menerima dan memproses input serta menampilkan layar setting laporan
	 *
	 * Method ini merupakan placeholder untuk menerima dan memproses input
	 * dan menampilkan layar setting laporan
	 *
	 * @return void
	 * @access public
	 * @see report_input(), report_process(), report_output()
	 */
	public function report() {
		$report_data = NULL;
		$this->report_input($report_data);
		$this->report_process($report_data);
		$this->report_output($report_data);
	}
	
	/**
	 * Menerima input untuk keperluan layar setting laporan
	 *
	 * Method ini merupakan placeholder untuk menerima input untuk keperluan layar setting laporan
	 *
	 * @param mixed $report_data data untuk layar setting laporan
	 *
	 * @return void
	 * @access protected
	 */
	protected function report_input(&$report_data = NULL) {
	}
	
	/**
	 * Menerima input untuk keperluan proses data untuk layar setting laporan
	 *
	 * Method ini merupakan placeholder untuk keperluan proses data untuk layar setting laporan
	 *
	 * @param mixed $report_data data untuk layar setting laporan
	 *
	 * @return void
	 * @access protected
	 */
	protected function report_process(&$report_data = NULL) {
	}
	
	/**
	 * Menampilkan layar setting laporan
	 *
	 * Method ini merupakan placeholder untuk keperluan penampilan layar setting laporan
	 *
	 * @param mixed $report_data data untuk layar setting laporan
	 *
	 * @return void
	 * @access protected
	 */
	protected function report_output(&$report_data = NULL) {
	}
	
	/**
	 * Menerima dan memproses input serta menampilkan laporan
	 *
	 * Method ini merupakan placeholder untuk menerima dan memproses input
	 * dan menampilkan laporan
	 *
	 * @return void
	 * @access public
	 * @see process_report_input(), process_report_process(), process_report_output()
	 */
	public function process_report() {
		$report_data = NULL;
		$this->process_report_input($report_data);
		$this->process_report_process($report_data);
		$this->process_report_output($report_data);
	}
	
	/**
	 * Menerima input untuk keperluan penampilan laporan
	 *
	 * Method ini merupakan placeholder untuk menerima input untuk keperluan penampilan laporan
	 *
	 * @param mixed $report_data data untuk laporan
	 *
	 * @return void
	 * @access protected
	 */
	protected function process_report_input(&$report_data = NULL) {
	}
	
	/**
	 * Menerima input untuk keperluan proses data untuk penampilan laporan
	 *
	 * Method ini merupakan placeholder untuk keperluan proses data untuk penampilan laporan
	 *
	 * @param mixed $report_data data untuk laporan
	 *
	 * @return void
	 * @access protected
	 */
	protected function process_report_process(&$report_data = NULL) {
	}
	
	/**
	 * Menampilkan laporan
	 *
	 * Method ini merupakan placeholder untuk keperluan penampilan laporan
	 *
	 * @param mixed $report_data data untuk laporan
	 *
	 * @return void
	 * @access protected
	 */
	protected function process_report_output(&$report_data = NULL) {
	}
}

/* EOF controllers/gnc_rep.php */